package club.xyes.zkh.ecommerce.dao.mapper;

import club.xyes.zkh.ecommerce.commons.entity.UserMembership;
import club.xyes.zkh.ecommerce.dao.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * Create by 郭文梁 2019/4/18 0018 14:24
 * UserMembershipMapper
 * 用户会员等级关系相关数据库访问对象
 *
 * @author 郭文梁
 * @data 2019/4/18 0018
 */
@Repository
public interface UserMembershipMapper extends BaseMapper<UserMembership> {
    /**
     * 根据用户ID查询会员等级定义
     * 注意 当商家将会员设置为不可用或会员不在有效时间范围内时时将查不到任何数据
     *
     * @param userId 用户ID
     * @return UserMembership List
     */
    List<UserMembership> selectByUserIdFetchAll(@Param("userId") Integer userId);

    /**
     * 根据用户ID查询会员等级定义
     * 注意 当商家将会员设置为不可用或会员不在有效时间范围内时时将查不到任何数据
     *
     * @param userId 用户ID
     * @param shopId 商铺ID
     * @return UserMembership List
     */
    List<UserMembership> selectByUserIdAndShopIdFetchAll(@Param("userId") Integer userId, @Param("shopId") Integer shopId);

    /**
     * 通过ID查找对象 同事查询关联属性
     *
     * @param id ID
     * @return 查询结果
     */
    UserMembership selectByIdFetchAll(@Param("id") Integer id);

    /**
     * 根据用户ID 和商家会员ID查询用户的会员信息
     *
     * @param userId           用户ID
     * @param shopMembershipId 商家会员ID
     * @return 会员信息
     */
    UserMembership selectOneByUserIdAndShopMembershipId(@Param("userId") Integer userId,
                                                        @Param("shopMembershipId") Integer shopMembershipId);

    /**
     * 通过用户ID和商铺ID查询会员数量
     *
     * @param userId 用户ID
     * @param shopId 商铺ID
     * @return 数量
     */
    Integer countByUserIdAndShopId(@Param("userId") Integer userId,
                                   @Param("shopId") Integer shopId);
}
